package com.yxw.yxnet_cd_center.common.enums;


import com.yxw.yxnet_cd_center.common.constant.CommonErrorTypes;

/**
 * @desc: 错误信息细化分类
 * @author: liuxin
 * @date: 2023.09.12
 */
public enum CommonErrorEnum {

    /**
     * 未知错误
     */
    UNKNOWN_ERROR("A9999", CommonErrorTypes.BIZ, "未知错误"),
    /**
     * 字段校验异常
     */
    PARAM_ERROR("A0001", CommonErrorTypes.BIZ, "字段校验异常"),
    /**
     * 缓存处理失败
     */
    REDIS_ERROR("A0002", CommonErrorTypes.SYSTEM, "Redis缓存处理失败"),
    /**
     * 上传文件失败
     */
    UPLOAD_ERROR("A0003", CommonErrorTypes.SYSTEM, "上传文件失败"),
    /**
     * 上传文件类型限制
     */
    UPLOAD_TYPE_ERROR("A0004", CommonErrorTypes.SYSTEM, "不能上传该文件类型"),
    /**
     * 下载文件失败
     */
    DOWNLOAD_ERROR("A0005", CommonErrorTypes.SYSTEM, "下载文件失败"),
    /**
     * 删除文件失败
     */
    DELETE_FILE_ERROR("A0006", CommonErrorTypes.SYSTEM, "删除文件失败"),
    /**
     * 删除文件失败
     */
    HTTP_MESSAGE_NOT_READABLE_ERROR("A0007", CommonErrorTypes.SYSTEM, "请求参数不能为空"),
    /**
     * 文件类型校验错误
     */
    FILE_TYPE_VERIFY_ERROR("A00081", CommonErrorTypes.BIZ, "文件类型校验错误"),
    /**
     * 文件流类型校验错误
     */
    FILE_FLOW_TYPE_VERIFY_ERROR("A00082", CommonErrorTypes.BIZ, "文件流类型校验错误"),
    /**
     * 文件转换异常
     */
    FILE_CONVERT_EXCEPTION("A0009", CommonErrorTypes.BIZ, "文件转换异常"),
    /**
     * 阿里OCR识别错误
     */
    ALI_OCR_RECOGNITION_ERROT("A0010", CommonErrorTypes.BIZ, "阿里OCR识别错误"),
    /**
     * 二维码生成失败
     */
    QRCODE_ERROR("A0011", CommonErrorTypes.SYSTEM, "二维码生成失败"),
    /**
     * 文件大小超出限制错误
     */
    FILE_SIZE_OUT_OF_RANG_ERROR("A0012", CommonErrorTypes.BIZ, "文件大小超出限制"),
    /**
     * banner跳转地址类型校验错误
     */
    BANNER_LINK_URL_TYPE_ERROR("A0013", CommonErrorTypes.BIZ, "banner跳转地址类型校验错误"),
    /**
     * 不满足业务需求错误
     */
    BUSINESS_ERROR("A0101", CommonErrorTypes.BIZ, "不满足业务需求错误"),
    /**
     * 业务类型错误
     */
    BUSINESS_TYPE_ERROR("A0102", CommonErrorTypes.BIZ, "业务类型错误!"),
    /**
     * APP用户短信验证码错误
     */
    APP_USER_SMS_MSG_CODE_ERROR("A0015", CommonErrorTypes.BIZ, "APP用户短信验证码错误"),
    /**
     * 系统通过密钥获取RSA私钥异常
     */
    SYSTEM_GET_RSA_PRIVATE_KEY_EXCEPTION("A0016", CommonErrorTypes.BIZ, "系统通过密钥获取RSA私钥异常"),
    /**
     * RSA私钥解密异常
     */
    RSA_PRIVATE_DECODE_EXCEPTION("A0017", CommonErrorTypes.BIZ, "RSA私钥解密异常"),
    /**
     * 请求头获取token异常
     */
    REQUEST_HEADER_GET_TOKEN_EXCEPTION("A0018", CommonErrorTypes.SYSTEM, "请求头获取token异常"),
    /**
     * 校验用户token异常
     */
    VERIFY_USER_TOKEN_EXCEPTION("A0019", CommonErrorTypes.SYSTEM, "校验用户token异常"),
    /**
     * 数据库操作异常
     */
    DATA_PROCESSING_FAILURE("A0020", CommonErrorTypes.BIZ, "数据库操作异常"),
    /**
     * 微信支付回调通知处理异常
     */
    WECHAT_PAY_NOTIFY_HANDLE_EXCEPTION("A0021", CommonErrorTypes.BIZ, "微信支付回调通知处理异常"),
    /**
     * 数据已删除异常
     */
    DATA_DELETED_EXCEPTION("A0022", CommonErrorTypes.SYSTEM, "该数据已删除"),
    /**
     * 数据不存在异常
     */
    DATA_NOT_EXISTED_EXCEPTION("A0023", CommonErrorTypes.SYSTEM, "数据不存在"),
    /**
     * 数据已存在异常
     */
    DATA_EXISTED_EXCEPTION("A0024", CommonErrorTypes.SYSTEM, "数据已存在"),
    /**
     * 服务调用异常
     */
    DATA_SERVICE_CALL_FAILED("A0025", CommonErrorTypes.BIZ, "服务调用失败"),
    /**
     * RSA公钥加密异常
     */
    RSA_PUBLIC_ENCRYPT_EXCEPTION("A0026", CommonErrorTypes.BIZ, "RSA私钥解密异常"),

    NO_PASSWORD_SET("A0027", CommonErrorTypes.BIZ, "未设置支付密码"),
    /**
     * RSA公密钥对生成异常
     */
    RSA_PUBLIC_PRIVATE_GENERATE_EXCEPTION("A0028", CommonErrorTypes.BIZ, "RSA公密钥对生成异常"),
    /**
     * 通用SQL异常
     */
    COMMON_SQL_EXCEPTION("A0029", CommonErrorTypes.BIZ, "通用SQL异常"),

    /**
     * 图片验证码不正确
     */
    INCORRECT_VERIFICATION_CODE("A0030", CommonErrorTypes.SYSTEM, "图片验证码不正确"),

    /**
     * 手机验证码不正确
     */
    SMS_VERIFICATION_CODE("A0035", CommonErrorTypes.SYSTEM, "手机验证码不正确"),

    /**
     * token失效
     */
    USER_TOKEN_EXPIRE("G00010", CommonErrorTypes.BIZ, "token过期"),

    /**
     * 用户未登录
     */
    USER_TOKEN_NOT_LOGIN("G00011", CommonErrorTypes.BIZ, "用户未登录"),

    /**
     * 无效的授权令牌
     */
    USER_TOKEN_INVALID_TOKEN("G00012", CommonErrorTypes.BIZ, "无效的授权令牌"),


    /**
     * 添加失败
     */
    INSERT_ERROR("A0031", CommonErrorTypes.SYSTEM),

    /**
     * 修改失败
     */
    UPDATE_ERROR("A0032", CommonErrorTypes.SYSTEM),

    /**
     * 密码错误
     */
    PASSWORD_ERROR("A0033", CommonErrorTypes.SYSTEM);


    /**
     * 枚举编码
     */
    private String code;


    /**
     * 错误类型
     */
    private String type;

    /**
     * 错误描述
     */
    private String description;

    private CommonErrorEnum(String code, String description) {
        this.code = code;
        this.description = description;
    }

    private CommonErrorEnum(String code, String type, String description) {
        this.code = code;
        this.type = type;
        this.description = description;
    }

    @Override
    public String toString() {
        return "CommonErrorEnum[" + this.code + "][" + this.description + "]";
    }

    public String getCode() {
        return this.code;
    }


    public String getType() {
        return this.type;
    }

    public String getDescription() {
        return this.description;
    }

}
